package de.hdu.mfz.model;


import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;


/**
 * @Kath
 * Date: 22.04.2012
 * Hat eine Positionsnummer (die Kombination aus RoutenId und Position ist immer 
 * eindeutig) Die Positionsnummer ist wichtig, damit man sp�ter eventuell 
 * Routenpunkte einf�gen  kann. Die RoutenpunktId ist daf�r nicht geeignet, 
 * weil Sie durch den User nicht ver�ndert werden darf
 */

@Entity
public class Routenpunkt implements Comparable<Routenpunkt> {
	static int counter = 0;
	
	@Id
	@GeneratedValue 
	private int routenpunktId;
	private String ort;
	private int pos;
	@ManyToOne
	@JoinColumn(name = "fkRoute", nullable = false)
	private Route route;



	public Routenpunkt() {
		super();
			}


	public Routenpunkt( String ort, int pos, Route route) {
		super();
		counter ++;
		this.ort = ort;
		this.pos = counter;
		this.route = route;

	}
	
	public static int getCounter() {
		return counter;
	}


	public static void setCounter(int counter) {
		Routenpunkt.counter = counter;
	}


	public int getRoutenpunktId() {
		return routenpunktId;
	}

	
	public String getOrt() {
		return ort;
	}

	public void setOrt(String ort) {
		this.ort = ort;
	}

	public Route getRoute() {
		return route;
	}

	public void setRoute(Route route) {
		this.route = route;
	}
	
	public int getPos() {
		return pos;
	}

	public void setPos(int pos) {
		this.pos = pos;
	}

	/*
	 * Funktion braucht man zum Sortieren in einer Liste.
	 * compareTo() funktioniert nur mit Routenpunkt objekten. 
	 * (non-Javadoc)
	 * @see java.lang.Comparable#compareTo(java.lang.Object)
	 */
	@Override
    public int compareTo(Routenpunkt rp) {
        if( this.pos < rp.getPos())
            return -1;
        if( this.pos > rp.getPos())
            return 1;
        return 0;
    }

	public String toString(){ 
		return "RoutenpunktId" + this.routenpunktId + 
				" Ort" +  this.ort +
				" RoutenId " + route.getRouteId();
	}
}